﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ABC_SA_DM;
using ABC_SA_DAL;

namespace ABC_SA_BL
{
    public class Cliente_BL
    {
        //crea un usuario y un cliente para insertarlos en la base de datos
        public bool crearUsuario(string userName, string pass, string nombre, string apellidoP, string apellidoM, string ident, string nacionalidad, string email, int rol)
        {
            Usuario_DAL usuarioDal = new Usuario_DAL();
            Usuario usuario = new Usuario();

            Cliente c = new Cliente();
            c.UserName = userName;
            c.Nombre = nombre;
            c.ApellidoPat = apellidoP;
            c.ApellidoMat = apellidoM;
            c.Identificacion = ident;
            c.Nacionalidad = nacionalidad;
            c.Email = email;

            usuario.UserName = userName;
            usuario.Contrasena = pass;
            usuario.Rol = rol;

            Cliente_DAL cliente = new Cliente_DAL();
            bool cont = usuarioDal.agregarUsuario(usuario);
            if (cont == true)
            {
                cont = cliente.Ingresar(c);
            }

            return cont;
        }
        
        //elimina un cliente de la base de datos
        public bool eliminarCliente(String usuario, string cliente) {
            Cliente_DAL c = new Cliente_DAL();
            Usuario_DAL u = new Usuario_DAL();

            bool cont = c.Eliminar(cliente);

            if (cont == true)
            {
                return cont = u.eliminarUsuario(usuario);
            }
            else {
                return false;
            }
        }

        //retorna la lista consultada en la base de datos
        public List<Cliente> consultarClientes()
        {
            Cliente_DAL cliente = new Cliente_DAL();
            return cliente.ConsultarClientes();
        }

        //retorna un cliente consultado en la base de datos
        public Cliente getCliente(String cliente) {
            Cliente_DAL clienteDal = new Cliente_DAL();
            Cliente c = clienteDal.consultaIdCliente(cliente);

            return c;        
        }

        //retorna el usuario consultado en la base de datos
        public Usuario getUsuario(string usuario) {
            Usuario_DAL usuarioCons = new Usuario_DAL();
            Usuario u = usuarioCons.consultarUsuario(usuario);

            return u;
        }

        //actualiza la informacion del cliente en la base de datos
        public bool modificaUsuario(int id, string userN, string nombre, string appP, string appM, string iden, string nac, string email) {
            Cliente_DAL clienteD = new Cliente_DAL();
            Cliente c = new Cliente();
            c.IdCliente = id;
            c.UserName = userN;
            c.Nombre = nombre;
            c.ApellidoPat = appP;
            c.ApellidoMat = appM;
            c.Identificacion = iden;
            c.Nacionalidad = nac;
            c.Email = email;

            return clienteD.ModificarClienteNuevo(c);
        }

/*
 * Rubén García Montenegro --> Consulta por Cliente. Obiene información de Usuario y Cliente
 *                             Solamente el atributo usuario va cargado
 * Fecha: 08/03/2014
 */
        public Cliente consultarID(Cliente cliente)
        {
            Cliente_DAL dalCliente = new Cliente_DAL();
            return dalCliente.consultaIdCliente(cliente.UserName);
        }


    }
}
